--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
meshchatx/src/__init__.py a9cc4b996b8da8ff414e305825f372ca12dc138d (a9cc4b99) Text, 1.06 KB
T8b949e# SPDX-License-Identifier: MIT
Tff7b72import T7ee787sys
T8b949e# NOTE: this class is required to be able to use print/log commands and have them flush to stdout and stderr immediately
T8b949e# without wrapper stdout and stderr, when using childProcess.stdout.on(data) in NodeJS script, we never get
T8b949e# any events fired until the process exits. However, force flushing the streams does fire the callbacks in NodeJS.
T8b949e# this class forces stream writes to be flushed immediately
Tff7b72class T56d364ImmediateFlushingStreamWrapperTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3streamTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstream Tff7b72= Te6edf3stream
T8b949e# force write to flush immediately
Tff7b72def Td2a8ffwriteTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstreamTff7b72.Td2a8ffwriteTb4b4b4(Te6edf3dataTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffstreamTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)
T8b949e# force writelines to flush immediately
Tff7b72def Td2a8ffwritelinesTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3linesTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffstreamTff7b72.Td2a8ffwritelinesTb4b4b4(Te6edf3linesTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffstreamTff7b72.Td2a8ffflushTb4b4b4(Tb4b4b4)
Tff7b72def Tff7b72__getattr__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3attrTb4b4b4)Tb4b4b4:
Tff7b72return Tffa657getattrTb4b4b4(Tff7b72selfTff7b72.Td2a8ffstreamTb4b4b4, Te6edf3attrTb4b4b4)
T8b949e# wrap stdout and stderr with our custom wrapper
Te6edf3sysTff7b72.Td2a8ffstdout Tff7b72= Te6edf3ImmediateFlushingStreamWrapperTb4b4b4(Te6edf3sysTff7b72.Td2a8ffstdoutTb4b4b4)
Te6edf3sysTff7b72.Td2a8ffstderr Tff7b72= Te6edf3ImmediateFlushingStreamWrapperTb4b4b4(Te6edf3sysTff7b72.Td2a8ffstderrTb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────